package com.dynamixsoftware.printershare;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Hashtable;

public final class Json
{
  static final char[][] amps = { { 38, 97, 109, 112 }, { 60, 108, 116 }, { 62, 103, 116 }, { 34, 113, 117, 111, 116 }, { 39, 97, 112, 111, 115 } };
  private static final Hashtable<Class<?>, XField[]> flds_cache = new Hashtable();
  private static final String shab = "0123456789abcdef";
  
  public static void copy(Object paramObject1, Object paramObject2)
  {
    if (!paramObject1.getClass().equals(paramObject2.getClass())) {
      throw new IllegalArgumentException();
    }
    XField[] arrayOfXField = getObjectFields(paramObject1);
    int i = 0;
    for (;;)
    {
      Field localField;
      if (i < arrayOfXField.length) {
        localField = arrayOfXField[i].field;
      }
      try
      {
        localField.set(paramObject2, localField.get(paramObject1));
        label55:
        i++;
        continue;
        return;
      }
      catch (IllegalAccessException localIllegalAccessException)
      {
        break label55;
      }
    }
  }
  
  private static Class<?> getFieldClass(Field paramField)
  {
    if (paramField != null) {}
    for (Class localClass = paramField.getType();; localClass = null)
    {
      if (ArrayList.class.equals(localClass))
      {
        Type localType = paramField.getGenericType();
        if ((localType instanceof ParameterizedType)) {
          localClass = (Class)((ParameterizedType)localType).getActualTypeArguments()[0];
        }
      }
      return localClass;
    }
  }
  
  private static XField[] getObjectFields(Object paramObject)
  {
    Class localClass = paramObject.getClass();
    XField[] arrayOfXField = (XField[])flds_cache.get(localClass);
    if (arrayOfXField == null)
    {
      Field[] arrayOfField = localClass.getFields();
      arrayOfXField = new XField[arrayOfField.length];
      for (int i = 0; i < arrayOfField.length; i++) {
        arrayOfXField[i] = new XField(arrayOfField[i]);
      }
      flds_cache.put(localClass, arrayOfXField);
    }
    return arrayOfXField;
  }
  
  /* Error */
  private static Hashtable<String, String> getOtherHolder(Object paramObject)
  {
    // Byte code:
    //   0: aload_0
    //   1: invokevirtual 50	java/lang/Object:getClass	()Ljava/lang/Class;
    //   4: astore_1
    //   5: aconst_null
    //   6: astore_2
    //   7: aload_1
    //   8: ldc 115
    //   10: invokevirtual 119	java/lang/Class:getField	(Ljava/lang/String;)Ljava/lang/reflect/Field;
    //   13: astore 5
    //   15: aconst_null
    //   16: astore_2
    //   17: aload 5
    //   19: ifnull +37 -> 56
    //   22: aload 5
    //   24: aload_0
    //   25: invokevirtual 73	java/lang/reflect/Field:get	(Ljava/lang/Object;)Ljava/lang/Object;
    //   28: checkcast 17	java/util/Hashtable
    //   31: astore_2
    //   32: aload_2
    //   33: ifnonnull +23 -> 56
    //   36: new 17	java/util/Hashtable
    //   39: dup
    //   40: invokespecial 20	java/util/Hashtable:<init>	()V
    //   43: astore 6
    //   45: aload 5
    //   47: aload_0
    //   48: aload 6
    //   50: invokevirtual 76	java/lang/reflect/Field:set	(Ljava/lang/Object;Ljava/lang/Object;)V
    //   53: aload 6
    //   55: astore_2
    //   56: aload_2
    //   57: areturn
    //   58: astore 4
    //   60: aload_2
    //   61: areturn
    //   62: astore 8
    //   64: aload 6
    //   66: areturn
    //   67: astore_3
    //   68: aload_2
    //   69: areturn
    //   70: astore 7
    //   72: aload 6
    //   74: areturn
    // Local variable table:
    //   start	length	slot	name	signature
    //   0	75	0	paramObject	Object
    //   4	4	1	localClass	Class
    //   6	63	2	localObject	Object
    //   67	1	3	localNoSuchFieldException1	java.lang.NoSuchFieldException
    //   58	1	4	localIllegalAccessException1	IllegalAccessException
    //   13	33	5	localField	Field
    //   43	30	6	localHashtable	Hashtable
    //   70	1	7	localNoSuchFieldException2	java.lang.NoSuchFieldException
    //   62	1	8	localIllegalAccessException2	IllegalAccessException
    // Exception table:
    //   from	to	target	type
    //   7	15	58	java/lang/IllegalAccessException
    //   22	32	58	java/lang/IllegalAccessException
    //   36	45	58	java/lang/IllegalAccessException
    //   45	53	62	java/lang/IllegalAccessException
    //   7	15	67	java/lang/NoSuchFieldException
    //   22	32	67	java/lang/NoSuchFieldException
    //   36	45	67	java/lang/NoSuchFieldException
    //   45	53	70	java/lang/NoSuchFieldException
  }
  
  public static Object read(BufferedInputStream paramBufferedInputStream, Class<?> paramClass)
    throws IOException
  {
    SpecialInputStream localSpecialInputStream = new SpecialInputStream(paramBufferedInputStream);
    int j;
    do
    {
      if (localSpecialInputStream.s == localSpecialInputStream.l) {
        localSpecialInputStream.fill();
      }
      byte[] arrayOfByte = localSpecialInputStream.buf;
      int i = localSpecialInputStream.s;
      localSpecialInputStream.s = (i + 1);
      j = (char)arrayOfByte[i];
      if (j == 123) {
        return readObject(localSpecialInputStream, paramClass);
      }
      if (j == 91) {
        return readArray(localSpecialInputStream, paramClass);
      }
    } while ((j == 32) || (j == 9) || (j == 13) || (j == 10));
    throw new IOException("Unexpected character in stream");
  }
  
  public static Object read(String paramString, Class<?> paramClass)
    throws IOException
  {
    return read(new BufferedInputStream(new ByteArrayInputStream(paramString.getBytes()), 4096), paramClass);
  }
  
  private static ArrayList<Object> readArray(SpecialInputStream paramSpecialInputStream, Class<?> paramClass)
    throws IOException
  {
    ArrayList localArrayList = new ArrayList();
    Object localObject = null;
    int i = 0;
    StringBuffer localStringBuffer = null;
    for (;;)
    {
      if (paramSpecialInputStream.s == paramSpecialInputStream.l) {
        paramSpecialInputStream.fill();
      }
      byte[] arrayOfByte = paramSpecialInputStream.buf;
      int j = paramSpecialInputStream.s;
      paramSpecialInputStream.s = (j + 1);
      int k = (char)arrayOfByte[j];
      if (k == 123)
      {
        localObject = readObject(paramSpecialInputStream, paramClass);
      }
      else if (k == 91)
      {
        localObject = readArray(paramSpecialInputStream, paramClass);
      }
      else if ((k == 44) || (k == 93))
      {
        if ((localObject != null) || (i > 0) || (localStringBuffer != null)) {
          if (localObject == null)
          {
            if (localStringBuffer != null)
            {
              localStringBuffer.append(paramSpecialInputStream.tmp_buffer, 0, i);
              localObject = localStringBuffer.toString();
              i = 0;
              localStringBuffer = null;
            }
          }
          else
          {
            localArrayList.add(localObject);
            localObject = null;
            if (k == 44) {
              continue;
            }
          }
        }
        while (k == 93) {
          for (;;)
          {
            return localArrayList;
            localObject = new String(paramSpecialInputStream.tmp_buffer, 0, i);
          }
        }
        throw new IOException("Unexpected character in stream");
      }
      else if (k == 34)
      {
        localObject = readQuotedString(paramSpecialInputStream);
      }
      else if ((k != 32) && (k != 9) && (k != 13) && (k != 10))
      {
        if (i == paramSpecialInputStream.tmp_buffer.length)
        {
          if (localStringBuffer == null) {
            localStringBuffer = new StringBuffer(2 * paramSpecialInputStream.tmp_buffer.length);
          }
          localStringBuffer.append(paramSpecialInputStream.tmp_buffer);
          i = 0;
        }
        char[] arrayOfChar = paramSpecialInputStream.tmp_buffer;
        int m = i + 1;
        arrayOfChar[i] = k;
        i = m;
      }
    }
  }
  
  private static Object readObject(SpecialInputStream paramSpecialInputStream, Class<?> paramClass)
    throws IOException
  {
    try
    {
      Object localObject6 = paramClass.newInstance();
      localObject1 = localObject6;
    }
    catch (InstantiationException localInstantiationException)
    {
      for (;;)
      {
        XField[] arrayOfXField;
        Object localObject2;
        Field localField;
        int i;
        StringBuffer localStringBuffer;
        Object localObject3;
        localObject1 = null;
      }
    }
    catch (IllegalAccessException localIllegalAccessException1)
    {
      label273:
      label471:
      label477:
      for (;;)
      {
        label350:
        Object localObject1 = null;
      }
    }
    if (localObject1 == null) {
      throw new IOException("Can't create object " + paramClass);
    }
    arrayOfXField = (XField[])getObjectFields(localObject1).clone();
    localObject2 = null;
    localField = null;
    i = 0;
    localStringBuffer = null;
    localObject3 = null;
    for (;;)
    {
      if (paramSpecialInputStream.s == paramSpecialInputStream.l) {
        paramSpecialInputStream.fill();
      }
      byte[] arrayOfByte = paramSpecialInputStream.buf;
      int j = paramSpecialInputStream.s;
      paramSpecialInputStream.s = (j + 1);
      int k = (char)arrayOfByte[j];
      if (k == 123)
      {
        if (localObject2 == null) {
          throw new IOException("Unexpected character in stream");
        }
        Object localObject5 = getFieldClass(localField);
        if (localObject5 != null) {}
        for (;;)
        {
          localObject3 = readObject(paramSpecialInputStream, (Class)localObject5);
          break;
          localObject5 = Object.class;
        }
      }
      if (k == 91)
      {
        if (localObject2 == null) {
          throw new IOException("Unexpected character in stream");
        }
        Object localObject4 = getFieldClass(localField);
        if (localObject4 != null) {}
        for (;;)
        {
          localObject3 = readArray(paramSpecialInputStream, (Class)localObject4);
          break;
          localObject4 = Object.class;
        }
      }
      if ((k == 44) || (k == 125))
      {
        if ((localObject3 != null) || (i > 0) || (localStringBuffer != null))
        {
          String str;
          if (localObject3 == null)
          {
            if (localStringBuffer != null)
            {
              localStringBuffer.append(paramSpecialInputStream.tmp_buffer, 0, i);
              str = localStringBuffer.toString();
              i = 0;
              localStringBuffer = null;
              localObject3 = str;
            }
          }
          else {
            if (localField == null) {
              break label350;
            }
          }
          for (;;)
          {
            try
            {
              if ("null".equals(localObject3)) {
                continue;
              }
              localField.set(localObject1, localObject3);
            }
            catch (IllegalAccessException localIllegalAccessException2)
            {
              Hashtable localHashtable;
              int n;
              char[] arrayOfChar;
              int m;
              continue;
            }
            if (k != 44) {
              continue;
            }
            localObject2 = null;
            localField = null;
            localObject3 = null;
            break;
            str = new String(paramSpecialInputStream.tmp_buffer, 0, i);
            break label273;
            localObject3 = null;
            continue;
            if (((localObject3 instanceof String)) && (!"null".equals(localObject3)))
            {
              localHashtable = getOtherHolder(localObject1);
              if (localHashtable != null) {
                localHashtable.put(localObject2, (String)localObject3);
              }
            }
          }
        }
        if (k == 125) {
          return localObject1;
        }
        throw new IOException("Unexpected character in stream");
      }
      if ((localObject2 == null) && (k == 58))
      {
        if ((localObject3 != null) || (i > 0) || (localStringBuffer != null))
        {
          if (localObject3 == null) {
            if (localStringBuffer != null)
            {
              localStringBuffer.append(paramSpecialInputStream.tmp_buffer, 0, i);
              localObject2 = localStringBuffer.toString();
              i = 0;
              localStringBuffer = null;
            }
          }
          for (n = 0;; n++)
          {
            int i1 = arrayOfXField.length;
            localField = null;
            if (n < i1)
            {
              if ((arrayOfXField[n] != null) && (arrayOfXField[n].name.equals(localObject2)))
              {
                localField = arrayOfXField[n].field;
                arrayOfXField[n] = null;
              }
            }
            else
            {
              localObject3 = null;
              break;
              localObject2 = new String(paramSpecialInputStream.tmp_buffer, 0, i);
              break label471;
              localObject2 = (String)localObject3;
              break label477;
            }
          }
        }
        throw new IOException("Unexpected character in stream");
      }
      if (k == 34)
      {
        localObject3 = readQuotedString(paramSpecialInputStream);
      }
      else if ((k != 32) && (k != 9) && (k != 13) && (k != 10))
      {
        if (i == paramSpecialInputStream.tmp_buffer.length)
        {
          if (localStringBuffer == null) {
            localStringBuffer = new StringBuffer(2 * paramSpecialInputStream.tmp_buffer.length);
          }
          localStringBuffer.append(paramSpecialInputStream.tmp_buffer);
          i = 0;
        }
        arrayOfChar = paramSpecialInputStream.tmp_buffer;
        m = i + 1;
        arrayOfChar[i] = k;
        i = m;
      }
    }
  }
  
  private static String readQuotedString(SpecialInputStream paramSpecialInputStream)
    throws IOException
  {
    StringBuffer localStringBuffer = null;
    int i = 0;
    char[] arrayOfChar1 = null;
    int j = 0;
    label900:
    for (;;)
    {
      if (paramSpecialInputStream.s == paramSpecialInputStream.l) {
        paramSpecialInputStream.fill();
      }
      byte[] arrayOfByte1 = paramSpecialInputStream.buf;
      int k = paramSpecialInputStream.s;
      paramSpecialInputStream.s = (k + 1);
      int m = (char)(0xFF & arrayOfByte1[k]);
      if (m == 34)
      {
        if (localStringBuffer != null)
        {
          char[] arrayOfChar4 = paramSpecialInputStream.tmp_buffer;
          localStringBuffer.append(arrayOfChar4, 0, i);
          return localStringBuffer.toString();
        }
        String str = new String(paramSpecialInputStream.tmp_buffer, 0, i);
        return str;
      }
      int i8;
      int i10;
      int i12;
      int i14;
      int i15;
      label466:
      int i17;
      label487:
      int i19;
      label511:
      int i21;
      label534:
      label542:
      int n;
      int i2;
      label623:
      int i5;
      label650:
      int i3;
      if (m == 92)
      {
        if (paramSpecialInputStream.s == paramSpecialInputStream.l) {
          paramSpecialInputStream.fill();
        }
        byte[] arrayOfByte2 = paramSpecialInputStream.buf;
        int i6 = paramSpecialInputStream.s;
        paramSpecialInputStream.s = (i6 + 1);
        m = (char)arrayOfByte2[i6];
        if (m != 117) {
          break label804;
        }
        if (paramSpecialInputStream.s == paramSpecialInputStream.l) {
          paramSpecialInputStream.fill();
        }
        byte[] arrayOfByte3 = paramSpecialInputStream.buf;
        int i7 = paramSpecialInputStream.s;
        paramSpecialInputStream.s = (i7 + 1);
        i8 = arrayOfByte3[i7];
        if (paramSpecialInputStream.s == paramSpecialInputStream.l) {
          paramSpecialInputStream.fill();
        }
        byte[] arrayOfByte4 = paramSpecialInputStream.buf;
        int i9 = paramSpecialInputStream.s;
        paramSpecialInputStream.s = (i9 + 1);
        i10 = arrayOfByte4[i9];
        if (paramSpecialInputStream.s == paramSpecialInputStream.l) {
          paramSpecialInputStream.fill();
        }
        byte[] arrayOfByte5 = paramSpecialInputStream.buf;
        int i11 = paramSpecialInputStream.s;
        paramSpecialInputStream.s = (i11 + 1);
        i12 = arrayOfByte5[i11];
        if (paramSpecialInputStream.s == paramSpecialInputStream.l) {
          paramSpecialInputStream.fill();
        }
        byte[] arrayOfByte6 = paramSpecialInputStream.buf;
        int i13 = paramSpecialInputStream.s;
        paramSpecialInputStream.s = (i13 + 1);
        i14 = arrayOfByte6[i13];
        if ((i8 < 48) || ((i8 > 57) && (i8 < 97)) || (i8 > 102) || (i10 < 48) || ((i10 > 57) && (i10 < 97)) || (i10 > 102) || (i12 < 48) || ((i12 > 57) && (i12 < 97)) || (i12 > 102) || (i14 < 48) || ((i14 > 57) && (i14 < 97)) || (i14 > 102)) {
          throw new IOException("Unexpected char in stream");
        }
        if (i8 > 96)
        {
          i15 = i8 - 87;
          int i16 = i15 << 12;
          if (i10 <= 96) {
            break label774;
          }
          i17 = i10 - 87;
          int i18 = i16 + (i17 << 8);
          if (i12 <= 96) {
            break label784;
          }
          i19 = i12 - 87;
          int i20 = i18 + (i19 << 4);
          if (i14 <= 96) {
            break label794;
          }
          i21 = i14 - 87;
          m = (char)(i21 + i20);
        }
      }
      else
      {
        if (i == paramSpecialInputStream.tmp_buffer.length)
        {
          if (localStringBuffer == null) {
            localStringBuffer = new StringBuffer(2 * paramSpecialInputStream.tmp_buffer.length);
          }
          localStringBuffer.append(paramSpecialInputStream.tmp_buffer);
          i = 0;
        }
        char[] arrayOfChar2 = paramSpecialInputStream.tmp_buffer;
        n = i + 1;
        arrayOfChar2[i] = m;
        if ((j <= 0) || (m == 38)) {
          break label900;
        }
        if (m != 59) {
          break label865;
        }
        int i1 = 1;
        i2 = 0;
        if (i2 < amps.length)
        {
          if (amps[i2].length != j) {
            break label852;
          }
          i1 = 1;
          i5 = 1;
          if (i5 < amps[i2].length)
          {
            if (amps[i2][i5] == arrayOfChar1[(i5 - 1)]) {
              break label846;
            }
            i1 = 0;
          }
          if (i1 == 0) {
            break label852;
          }
          m = amps[i2][0];
        }
        if (i1 != 0)
        {
          i3 = -1 + (n - j);
          if (i3 >= 0) {
            break label858;
          }
          localStringBuffer.delete(localStringBuffer.length() - i3, localStringBuffer.length());
        }
      }
      label774:
      label784:
      label794:
      label804:
      label846:
      label852:
      label858:
      for (int i4 = 0;; i4 = i3)
      {
        char[] arrayOfChar3 = paramSpecialInputStream.tmp_buffer;
        n = i4 + 1;
        arrayOfChar3[i4] = m;
        i = n;
        j = 0;
        break;
        i15 = i8 - 48;
        break label466;
        i17 = i10 - 48;
        break label487;
        i19 = i12 - 48;
        break label511;
        i21 = i14 - 48;
        break label534;
        if (m == 110)
        {
          m = 10;
          break label542;
        }
        if (m == 114)
        {
          m = 13;
          break label542;
        }
        if (m != 116) {
          break label542;
        }
        m = 9;
        break label542;
        i5++;
        break label650;
        i2++;
        break label623;
      }
      label865:
      if (j - 1 < 15)
      {
        arrayOfChar1[(j - 1)] = m;
        j++;
        i = n;
      }
      else
      {
        i = n;
        j = 0;
        continue;
        if (m == 38)
        {
          j = 1;
          if (arrayOfChar1 == null)
          {
            arrayOfChar1 = new char[16];
            i = n;
            continue;
          }
        }
        i = n;
      }
    }
  }
  
  public static String write(Object paramObject)
    throws IOException
  {
    ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream(8192);
    BufferedOutputStream localBufferedOutputStream = new BufferedOutputStream(localByteArrayOutputStream, 4096);
    write(paramObject, localBufferedOutputStream);
    localBufferedOutputStream.flush();
    return localByteArrayOutputStream.toString();
  }
  
  public static void write(Object paramObject, BufferedOutputStream paramBufferedOutputStream)
    throws IOException
  {
    char[] arrayOfChar = new char[4096];
    if ((paramObject instanceof ArrayList))
    {
      writeArray((ArrayList)paramObject, paramBufferedOutputStream, arrayOfChar);
      return;
    }
    writeObject(paramObject, paramBufferedOutputStream, arrayOfChar);
  }
  
  private static void writeArray(ArrayList paramArrayList, BufferedOutputStream paramBufferedOutputStream, char[] paramArrayOfChar)
    throws IOException
  {
    if (paramArrayList == null)
    {
      paramBufferedOutputStream.write("null".getBytes());
      return;
    }
    paramBufferedOutputStream.write(91);
    int i = 0;
    if (i < paramArrayList.size())
    {
      if (i > 0) {
        paramBufferedOutputStream.write(",".getBytes());
      }
      Object localObject = paramArrayList.get(i);
      if ((localObject instanceof String)) {
        writeQuotedString((String)localObject, paramBufferedOutputStream, paramArrayOfChar);
      }
      for (;;)
      {
        i++;
        break;
        if ((localObject instanceof ArrayList)) {
          writeArray((ArrayList)localObject, paramBufferedOutputStream, paramArrayOfChar);
        } else {
          writeObject(localObject, paramBufferedOutputStream, paramArrayOfChar);
        }
      }
    }
    paramBufferedOutputStream.write(93);
  }
  
  private static void writeObject(Object paramObject, BufferedOutputStream paramBufferedOutputStream, char[] paramArrayOfChar)
    throws IOException
  {
    if (paramObject == null)
    {
      paramBufferedOutputStream.write("null".getBytes());
      return;
    }
    paramBufferedOutputStream.write(123);
    int i = 1;
    XField[] arrayOfXField = getObjectFields(paramObject);
    int j = 0;
    for (;;)
    {
      String str;
      Field localField;
      Class localClass;
      if (j < arrayOfXField.length)
      {
        str = arrayOfXField[j].name;
        localField = arrayOfXField[j].field;
        if (i == 0) {
          paramBufferedOutputStream.write(44);
        }
        if (i != 0) {
          i = 0;
        }
        localClass = localField.getType();
      }
      try
      {
        int k = str.length();
        char[] arrayOfChar;
        if (paramArrayOfChar.length < k) {
          arrayOfChar = str.toCharArray();
        }
        for (;;)
        {
          if (m < k)
          {
            paramBufferedOutputStream.write((byte)arrayOfChar[m]);
            m++;
            continue;
            arrayOfChar = paramArrayOfChar;
            str.getChars(0, k, arrayOfChar, 0);
          }
          else
          {
            paramBufferedOutputStream.write(58);
            if (String.class == localClass)
            {
              writeQuotedString((String)localField.get(paramObject), paramBufferedOutputStream, paramArrayOfChar);
              break;
            }
            if (ArrayList.class == localClass)
            {
              writeArray((ArrayList)paramObject, paramBufferedOutputStream, paramArrayOfChar);
              break;
            }
            writeObject(localField.get(paramObject), paramBufferedOutputStream, paramArrayOfChar);
            break;
            paramBufferedOutputStream.write(125);
            return;
          }
          int m = 0;
        }
      }
      catch (IllegalAccessException localIllegalAccessException)
      {
        j++;
      }
    }
  }
  
  private static void writeQuotedString(String paramString, BufferedOutputStream paramBufferedOutputStream, char[] paramArrayOfChar)
    throws IOException
  {
    if (paramString == null)
    {
      paramBufferedOutputStream.write("null".getBytes());
      return;
    }
    paramBufferedOutputStream.write(34);
    int i = paramString.length();
    char[] arrayOfChar;
    int j;
    label40:
    int k;
    if (paramArrayOfChar.length < i)
    {
      arrayOfChar = paramString.toCharArray();
      j = 0;
      if (j >= i) {
        break label232;
      }
      k = arrayOfChar[j];
      if (k != 34) {
        break label91;
      }
      paramBufferedOutputStream.write("\\\"".getBytes());
    }
    for (;;)
    {
      j++;
      break label40;
      arrayOfChar = paramArrayOfChar;
      paramString.getChars(0, i, arrayOfChar, 0);
      break;
      label91:
      if (k == 92)
      {
        paramBufferedOutputStream.write("\\\\".getBytes());
      }
      else if (k > 255)
      {
        int m = 0xF & k >> 12;
        int n = 0xF & k >> 8;
        int i1 = 0xF & k >> 4;
        int i2 = k & 0xF;
        paramBufferedOutputStream.write(92);
        paramBufferedOutputStream.write(117);
        paramBufferedOutputStream.write((byte)"0123456789abcdef".charAt(m));
        paramBufferedOutputStream.write((byte)"0123456789abcdef".charAt(n));
        paramBufferedOutputStream.write((byte)"0123456789abcdef".charAt(i1));
        paramBufferedOutputStream.write((byte)"0123456789abcdef".charAt(i2));
      }
      else
      {
        paramBufferedOutputStream.write((byte)(k & 0xFF));
      }
    }
    label232:
    paramBufferedOutputStream.write(34);
  }
  
  static class SpecialInputStream
  {
    final byte[] buf;
    final InputStream is;
    int l;
    int s;
    final char[] tmp_buffer;
    
    SpecialInputStream(InputStream paramInputStream)
    {
      this.is = paramInputStream;
      this.buf = new byte[4096];
      this.tmp_buffer = new char[4096];
      this.l = -1;
      this.s = -1;
    }
    
    final void fill()
      throws IOException
    {
      while (this.s == this.l)
      {
        this.s = 0;
        this.l = this.is.read(this.buf);
      }
      if (this.l == -1) {
        throw new IOException("Unexpected end of stream");
      }
    }
  }
  
  static class XField
  {
    final Field field;
    final String name;
    
    XField(Field paramField)
    {
      String str = paramField.getName();
      if (str.endsWith("_")) {
        str = str.substring(0, -1 + str.length());
      }
      paramField.setAccessible(true);
      this.name = str;
      this.field = paramField;
    }
  }
}


/* Location:           C:\Users\Admin\Desktop\Decompiler\JAD\jd-gui-0.3.6.windows\classes_dex2jar.jar
 * Qualified Name:     com.dynamixsoftware.printershare.Json
 * JD-Core Version:    0.7.0.1
 */